There are numerous situations in which it is important to synchronize data that can be downloaded from a server and modified by more than one person or on more than one computer. Each person having access to the data can make changes that may be inconsistent with each other, causing errors in the data when the versions of the data that include these inconsistent changes are uploaded to the server. For example, a person who has downloaded data may add elements to the data and upload the modified data to the server. However, those modifications may be overwritten when another person uploads a different version of the data to the server. Relatively complicated software products have been developed to prevent such scenarios from occurring. Such software products are often used by groups of programmers who are cooperatively developing software to avoid conflicts as different portions of complex software code are written and then modified by different program developers. For example, Microsoft Corporation includes a Visual Sourcesafe™ program with its software development suite, Visual Studio™ that enables developers to “check out” source code files, and when the files are “checked in,” merges changes made by all of the users who have checked out the files, by comparing all versions of each file. However, there are many instances when a simpler approach to preventing conflicts and synchronizing the data modified by multiple users that does not merge changes by different users would be beneficial.
While many other types of data might benefit from a simple program to ensure synchronization of the data on the server and the data downloaded and modified by a plurality of users, an excellent example of such an application arises in connection with data stored on Microsoft Corporation's Encarta Class Server (ECS), which starting with version 2.0, will be sold under the trademark Class Server™. The ECS is a client/server product that was developed for use in kindergarten through twelfth grade schools (K–12) to manage distribution, collection, and grading of electronic school work, or “assignments.” Students access the ECS using a Web interface. Teachers access ECS using the ECS teacher client (TC), which is also known as Class Server-Teacher. Using TC, a teacher can assign an assignment to students; once the assignment has been completed by students, the teacher can grade each student's electronic work product (called a “paper”) for that assignment. Finally, students can view their graded papers. More information about the ECS is available on the Internet at the Web site http://ECS.msn.com/.
Teachers can use TC to create assignments and grade papers remotely over the Internet (e.g., while the teacher is working at home), or can work offline, i.e., while not connected to an intranet or the Internet. When the teacher reconnects to the network, it is important that the TC synchronize the upload to the ECS of any changes (to assignments and papers) that the teacher made, and download any new or modified assignments as well as papers completed by students. The ECS must allow teachers to collaborate. For example, while working offline at home, a teacher should be able to create an assignment, while a teaching assistant grades papers at school. When either the teacher or teaching assistant clicks a synchronize button in the TC, that person should receive the changes made by the other during the synchronization, and changes made by the teacher should then be uploaded to the ECS.
Accordingly, it is important that assignments and papers be synchronized between client and server, and that collisions between modified data be detected and resolved. Collisions can occur if two teachers change the same assignment at the same time. The synchronization process should be incremental, requiring only data transfer of information that has changed since the last synchronization occurred. A program that can provide such functionality will thus be broadly applicable to other types of data and other applications in which data synchronization is important.